Handle dead keysyms present on the US-International keyboard. For clarity,
authorTor Lillqvist <tml@iki.fi>
Fri, 19 Sep 2003 00:30:35 +0000 (00:30 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Fri, 19 Sep 2003 00:30:35 +0000 (00:30 +0000)
2003-09-19  Tor Lillqvist  <tml@iki.fi>

* gdk/win32/gdkkeys-win32.c (update_keymap): Handle dead keysyms
present on the US-International keyboard. For clarity, order
keysyms in case statement according to numeric value.

(gdk_keymap_translate_keyboard_state): Handle Caps Lock
correctly. (#120176, Ken Rastatter and Owen Taylor)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/win32/gdkkeys-win32.c

index 215cccf1b0a5809389f1ff8a3b5fa5e0c89812be..439eef94072fef29d98e6832408137a01a3b223d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2003-09-19  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkkeys-win32.c (update_keymap): Handle dead keysyms
+       present on the US-International keyboard. For clarity, order
+       keysyms in case statement according to numeric value.
+
+       (gdk_keymap_translate_keyboard_state): Handle Caps Lock
+       correctly. (#120176, Ken Rastatter and Owen Taylor)
+
 2003-09-18  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkaction.c (gtk_action_finalize): Call g_closure_unref() to
index 215cccf1b0a5809389f1ff8a3b5fa5e0c89812be..439eef94072fef29d98e6832408137a01a3b223d 100644 (file)
@@ -1,3 +1,12 @@
+2003-09-19  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkkeys-win32.c (update_keymap): Handle dead keysyms
+       present on the US-International keyboard. For clarity, order
+       keysyms in case statement according to numeric value.
+
+       (gdk_keymap_translate_keyboard_state): Handle Caps Lock
+       correctly. (#120176, Ken Rastatter and Owen Taylor)
+
 2003-09-18  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkaction.c (gtk_action_finalize): Call g_closure_unref() to
index 215cccf1b0a5809389f1ff8a3b5fa5e0c89812be..439eef94072fef29d98e6832408137a01a3b223d 100644 (file)
@@ -1,3 +1,12 @@
+2003-09-19  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkkeys-win32.c (update_keymap): Handle dead keysyms
+       present on the US-International keyboard. For clarity, order
+       keysyms in case statement according to numeric value.
+
+       (gdk_keymap_translate_keyboard_state): Handle Caps Lock
+       correctly. (#120176, Ken Rastatter and Owen Taylor)
+
 2003-09-18  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkaction.c (gtk_action_finalize): Call g_closure_unref() to
index 215cccf1b0a5809389f1ff8a3b5fa5e0c89812be..439eef94072fef29d98e6832408137a01a3b223d 100644 (file)
@@ -1,3 +1,12 @@
+2003-09-19  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkkeys-win32.c (update_keymap): Handle dead keysyms
+       present on the US-International keyboard. For clarity, order
+       keysyms in case statement according to numeric value.
+
+       (gdk_keymap_translate_keyboard_state): Handle Caps Lock
+       correctly. (#120176, Ken Rastatter and Owen Taylor)
+
 2003-09-18  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkaction.c (gtk_action_finalize): Call g_closure_unref() to
index 215cccf1b0a5809389f1ff8a3b5fa5e0c89812be..439eef94072fef29d98e6832408137a01a3b223d 100644 (file)
@@ -1,3 +1,12 @@
+2003-09-19  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkkeys-win32.c (update_keymap): Handle dead keysyms
+       present on the US-International keyboard. For clarity, order
+       keysyms in case statement according to numeric value.
+
+       (gdk_keymap_translate_keyboard_state): Handle Caps Lock
+       correctly. (#120176, Ken Rastatter and Owen Taylor)
+
 2003-09-18  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkaction.c (gtk_action_finalize): Call g_closure_unref() to
index 0a5e4332d7e559cfba8ce2f490395697ba0d8081..5bf0c3b890af60af88203a120448796d3a3a06c3 100644 (file)
@@ -314,33 +314,37 @@ update_keymap (void)
                      /* Use dead keysyms instead of "undead" ones */
                      switch (gdk_unicode_to_keyval (wcs[0]))
                        {
-                       case GDK_grave:
-                         *ksymp = GDK_dead_grave; break;
-                       case GDK_acute:
+                       case '"': /* 0x022 */
+                         *ksymp = GDK_dead_diaeresis; break;
+                       case '\'': /* 0x027 */
                          *ksymp = GDK_dead_acute; break;
-                       case GDK_asciicircum:
+                       case GDK_asciicircum: /* 0x05e */
                          *ksymp = GDK_dead_circumflex; break;
-                       case GDK_asciitilde:
+                       case GDK_grave: /* 0x060 */
+                         *ksymp = GDK_dead_grave; break;
+                       case GDK_asciitilde: /* 0x07e */
                          *ksymp = GDK_dead_tilde; break;
-                       case GDK_breve:
-                         *ksymp = GDK_dead_breve; break;
-                       case GDK_abovedot:
-                         *ksymp = GDK_dead_abovedot; break;
-                       case GDK_diaeresis:
+                       case GDK_diaeresis: /* 0x0a8 */
                          *ksymp = GDK_dead_diaeresis; break;
-                       case GDK_doubleacute:
-                         *ksymp = GDK_dead_doubleacute; break;
-                       case GDK_caron:
-                         *ksymp = GDK_dead_caron; break;
-                       case GDK_cedilla:
+                       case GDK_degree: /* 0x0b0 */
+                         *ksymp = GDK_dead_abovering; break;
+                       case GDK_acute: /* 0x0b4 */
+                         *ksymp = GDK_dead_acute; break;
+                       case GDK_periodcentered: /* 0x0b7 */
+                         *ksymp = GDK_dead_abovedot; break;
+                       case GDK_cedilla: /* 0x0b8 */
                          *ksymp = GDK_dead_cedilla; break;
-                       case GDK_ogonek:
+                       case GDK_breve: /* 0x1a2 */
+                         *ksymp = GDK_dead_breve; break;
+                       case GDK_ogonek: /* 0x1b2 */
                          *ksymp = GDK_dead_ogonek; break;
-                       case GDK_degree:
-                         *ksymp = GDK_dead_abovering; break;
-                       case GDK_periodcentered:
+                       case GDK_caron: /* 0x1b7 */
+                         *ksymp = GDK_dead_caron; break;
+                       case GDK_doubleacute: /* 0x1bd */
+                         *ksymp = GDK_dead_doubleacute; break;
+                       case GDK_abovedot: /* 0x1ff */
                          *ksymp = GDK_dead_abovedot; break;
-                       case GDK_Greek_accentdieresis:
+                       case GDK_Greek_accentdieresis: /* 0x7ae */
                          *ksymp = GDK_Greek_accentdieresis; break;
                        default:
                          GDK_NOTE (EVENTS,
@@ -661,8 +665,8 @@ gdk_keymap_translate_keyboard_state (GdkKeymap       *keymap,
     return FALSE;
 
   if ((state & GDK_SHIFT_MASK) && (state & GDK_LOCK_MASK))
-    shift_level = 0;           /* shift disables shift lock */
-  else if ((state & GDK_SHIFT_MASK) || (state & GDK_LOCK_MASK))
+    shift_level = 0;           /* shift disables caps lock */
+  else if (state & GDK_SHIFT_MASK)
     shift_level = 1;
   else
     shift_level = 0;
@@ -718,6 +722,13 @@ gdk_keymap_translate_keyboard_state (GdkKeymap       *keymap,
   if (effective_group)
     *effective_group = group;
 
+  if (!(state & GDK_SHIFT_MASK) && (state & GDK_LOCK_MASK))
+    {
+      guint upper = gdk_keyval_to_upper (tmp_keyval);
+      if (upper != tmp_keyval)
+       tmp_keyval = upper;
+    }
+
   if (level)
     *level = shift_level;